package com.example.aiagent.agent;

/**
 * ReAct(Reasoning and Acting) 模式的代理抽象类
 * 实现了思考-行动的循环模式
 */
public abstract class ReActAgent extends BaseAgent {

    /**
     * 处理当前状态并决定下一步行动
     *
     * @return 是否要执行行动，true代表需要执行，false代表不需要执行
     */
    public abstract boolean think();

    /**
     * 执行决定的行动
     *
     * @return 行动执行结果
     */
    public abstract String act();

    /**
     * 执行单个步骤  思考--行动
     *
     * @return
     */
    @Override
    public String step() {
        try {
            // 先思考
            if (!think()) {
                return "思考完成   无需行动";
            }

            return act();

        } catch (Exception e) {
            e.printStackTrace();
            return "步骤执行失败：" + e.getMessage();
        }
    }
}
